﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Reporting.WebForms;
using Recursos.Model;
using Recursos.View;
using Recursos.dsPeriodoTableAdapters;
using Recursos.dsHistorialTableAdapters;
using Recursos.dsHistorialParticularTableAdapters;

namespace Recursos
{
    public partial class WebForm6 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
   
            
            var userSecurity = ((Usuario)Session["UserLogged"]);
            var permisos = new PermisosModel();
            if(userSecurity==null)
                Response.Redirect("~/NoAccess.aspx");
            if (!Page.IsPostBack && userSecurity != null && (permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Administrador") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Coordinador")))
                PopulateDropDown();

            else if (userSecurity == null || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Operador") || permisos.obtenerRolUsuario(userSecurity.Cedula).Equals("Profesor"))
            {
                Response.Redirect("~/NoAccess.aspx");
            }
        }



        protected void Page_Dispose(object sender, EventArgs e)
        {
            Response.Redirect("~/View/PermisosView.aspx");
        }

     /*   private void TestReport()
        {
            var sedesModel = new SedeModel();
            var sedes = sedesModel.CargarSedes();
            var source = new ReportDataSource("DataSet1", sedes);
            ReportViewer1.LocalReport.ReportPath = "View\\Sedes.rdlc";
            ReportViewer1.LocalReport.DataSources.Clear();
            ReportViewer1.LocalReport.DataSources.Add(source);
            ReportViewer1.LocalReport.Refresh();
        }
        */
 
        private void PopulateDropDown()
        {
            CargarSedes();
            CargarModalidad();
            CargarPeriodos();
            CargarEspacios();
        }

        private void CargarSedes()
        {
            var sedesModel = new SedeModel();
            var sedes = sedesModel.CargarSedes();
            foreach (var item in sedes.Select(sede => new ListItem(sede.Nombre, sede.id.ToString())))
            {
                RadioButtonList1.Items.Add(item);
            }
            RadioButtonList1.Items.FindByValue(sedes.First().id.ToString()).Selected = true;
        }

        private void CargarModalidad()
        {
            var modalidad = new ModalidadModel();
            DropDownListModalidad.DataSource = modalidad.CargarModalidad();
            DropDownListModalidad.DataTextField = "Nombre";
            DropDownListModalidad.DataValueField = "id";
            DropDownListModalidad.DataBind();
        }

        private void CargarPeriodos()
        {
            var periodos = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
            DropDownListPeriodo.DataSource = periodos;
            DropDownListPeriodo.DataBind();
        }

        private void CargarEspacios()
        {
           
            var espacios = new EspacioModel();
            DropDownListEspacio.DataSource = espacios.CargarEspacios().Where(e=> e.IdSede == int.Parse(RadioButtonList1.SelectedValue));
            DropDownListEspacio.DataTextField = "Codigo";
            DropDownListEspacio.DataValueField = "id";
            DropDownListEspacio.DataBind();
        }

    /*    private IList<EntityReservacion>  Consultar()
        {
            var huModel = new HistorialUsoModel();
            var periodo = huModel.GetPeriodo(int.Parse(TextBoxAño.Text), int.Parse(DropDownListPeriodo.SelectedValue),
                                             int.Parse(DropDownListModalidad.SelectedValue));
            if (periodo == 0)
            {
                WebMsgBox.Show("No se encuentran Registros del periodo Ingresado");
                return null;
            }
            return huModel.ObtenerReservaciones(int.Parse(DropDownListEspacio.SelectedValue), periodo);

        }*/

        protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarEspacios();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            

            var huModel = new HistorialUsoModel();
            var periodo = huModel.GetPeriodo(int.Parse(TextBoxAño.Text), int.Parse(DropDownListPeriodo.SelectedValue),
                                             int.Parse(DropDownListModalidad.SelectedValue));
            if (periodo == 0)
            {
                WebMsgBox.Show("No se encuentran Registros del periodo Ingresado", "Historial de Uso");
                return;
            }
            if (DropDownListEspacio.SelectedValue == "")
                return;
            if (DropDownListTipoReporte.SelectedIndex == 0 )
            {

                var periodomodel = new PeriodoModel();
                var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(TextBoxAño.Text), int.Parse(DropDownListPeriodo.SelectedValue), int.Parse(DropDownListModalidad.SelectedValue));
                ReportViewer1.LocalReport.ReportPath = "ReporteHistorial.rdlc";
                ReporteHistorialTableAdapter ta = new ReporteHistorialTableAdapter();
                dsHistorial.ReporteHistorialDataTable tabla = new dsHistorial.ReporteHistorialDataTable();
                ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListEspacio.SelectedValue));
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportDataSource datasource = new ReportDataSource("DataSetHistorial", (DataTable)tabla);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
                ReportViewer1.Visible = true;
                ReportViewer1.LocalReport.Refresh();
            }
            else

            {
                var periodomodel = new PeriodoModel();
                var resultadoperiodo = periodomodel.RetornarPeriodo(int.Parse(TextBoxAño.Text), int.Parse(DropDownListPeriodo.SelectedValue), int.Parse(DropDownListModalidad.SelectedValue));
                ReportViewer1.LocalReport.ReportPath = "ReporteHistorialParticular.rdlc";
                ReporteHistorialParticularTableAdapter ta = new ReporteHistorialParticularTableAdapter();
                dsHistorialParticular.ReporteHistorialParticularDataTable tabla = new  dsHistorialParticular.ReporteHistorialParticularDataTable();
                ta.Fill(tabla, resultadoperiodo, int.Parse(DropDownListEspacio.SelectedValue));
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportDataSource datasource = new ReportDataSource("DataSetHistorialParticular", (DataTable)tabla);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
                ReportViewer1.Visible = true;
                ReportViewer1.LocalReport.Refresh();
            }

        }
        
    }
}